using System;
using System.Runtime.Serialization;
using System.Collections.Generic;

namespace CoreEx.Samples.DomainModel
{

	/// <summary>
	/// A class that represents Customers.
	/// </summary>
	[Serializable]
	public class Customer
	{
		#region Private Members

		private IList<CustomerCustomerDemo> _customerCustomerDemo = new List<CustomerCustomerDemo>();
		private IList<Order> _orders = new List<Order>();

		#endregion

		/// <summary>
		/// Gets or sets the Customer ID
		/// </summary>
		public virtual string CustomerID { get; set; }

		/// <summary>
		/// Gets or sets the Company Name
		/// </summary>
		public virtual string CompanyName { get; set; }

		/// <summary>
		/// Gets or sets the Phone
		/// </summary>
		public virtual string Phone { get; set; }

		/// <summary>
		/// Gets or sets the Fax
		/// </summary>
		public virtual string Fax { get; set; }

		/// <summary>
		/// Gets the Customer Customer Demo
		/// </summary>
		public IList<CustomerCustomerDemo> CustomerCustomerDemo 
		{
			get { return _customerCustomerDemo; }
		}

		/// <summary>
		/// Gets the Orders
		/// </summary>
		public IList<Order> Orders 
		{
			get { return _orders; }
		}

		/// <summary>
		/// Gets or sets the Customer Contact
		/// </summary>
		public virtual CustomerContact CustomerContact { get; set;}

		/// <summary>
		/// Gets or sets the Billing Address
		/// </summary>
		public virtual Address BillingAddress { get; set;}

		/// <summary>
		/// Gets or sets the Vistor Address
		/// </summary>
		public virtual Address VistorAddress { get; set;}
	}
}
